home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-11-25 | 15.5 KB | 432 lines |
- IMPLEMENTATION MODULE KassenStand;
- FROM BlRscInc IMPORT INVENDIA, (* TREE *) BIERE ,
- LIMOS , KASSETEO, KASSEPRK, SBEIFAX , AUSSENST ,
- CNCLINVT , OKINVNT , (* OBJECTs in TREE #6 *) SPENDDIA, (* TREE *)
- OKSPENDE , CNCLSPND , SPNDBTRG; (* OBJECTs in TREE #7 *)
-
- FROM EdiereBierListe IMPORT AnfangsUebertrag, BierListe,
- ComputeCustomer, SaveList, LoadList, LoadOldList;
- FROM BListe IMPORT Kunde,First,Next,AtLast,Empty,GetValue;
- FROM Bestellungen IMPORT AusgabenFuerBierKauf, AusgabenFuerLimoKauf,
- GekaufteBierFlaschen, GekaufteLimoFlaschen,
- SchuldenAnFax;
-
- FROM PreisErfassung IMPORT VerkaufsPreis,SavePreise,LoadPreise,LoadOldPreise;
-
- FROM SYSTEM IMPORT ADDRESS,VAL;
- FROM AES IMPORT FormAlert,ResourceGetAddr;
- FROM EasyDialog IMPORT DoDialog,GetText,SetText,IsSelected;
- FROM ConvertStr IMPORT StrToInt,IntToStr,LongIntToStr,StrToLongInt;
- FROM InOut IMPORT OpenOutput,CloseOutput,OpenInput,CloseInput,Done,
- WriteString,WriteInt,ReadInt,WriteLn;
- FROM LongInOut IMPORT ReadLongInt,WriteLongInt;
- FROM Strings IMPORT Delete;
- VAR Kasse : RECORD
- Einnahmen,SummeDerEinnahmen,
- SpendenEingang,SummeDerSpenden,
- Ausgaben,SummeDerAusgaben,
- BierEinkaufsWert,SummeBierEinkaufsWert,
- LimoEinkaufsWert,SummeLimoEinkaufsWert,
- BierVerkaufsWert,SummeBierVerkaufsWert,
- LimoVerkaufsWert,SummeLimoVerkaufsWert,
- AnfangsStand :LONGINT;
-
- BierFlaschenEinGang,SummeDerBierFlaschen,
- LimoFlaschenEinGang,SummeDerLimoFlaschen,
- BierStriche,SummeDerBierStriche,
- LimoStriche,SummeDerLimoStriche :INTEGER;
- END(*RECORD*);
-
- AnfangsUebertragnaechsteListe,
- EndUebertrag : LONGINT;
-
-
-
- PROCEDURE SpendenErfassen;
- VAR SpendenDiaAddr :ADDRESS;
- DiaRet :INTEGER;
- SpendenStr :ARRAY [0..5] OF CHAR;
- OK :BOOLEAN;
-
- BEGIN
- ResourceGetAddr(0,SPENDDIA,SpendenDiaAddr);
- DiaRet:=DoDialog(SpendenDiaAddr,SPNDBTRG);
- IF DiaRet=OKSPENDE THEN
- GetText(SPNDBTRG,SpendenDiaAddr,SpendenStr);
- StrToLongInt(SpendenStr,Kasse.SpendenEingang,OK);
- END(*IF*);
- END SpendenErfassen;
-
- PROCEDURE ComputeKassenRecord;
- VAR
- StricheBeiBier,
- StricheBeiLimo : INTEGER;
- Customer : Kunde;
-
- PROCEDURE ComputeList;
- VAR OK : BOOLEAN;
- BEGIN
- EndUebertrag:=0D;
- IF ~Empty(BierListe) THEN
- First(BierListe);
- LOOP
- OK:=GetValue(BierListe,Customer);
- EndUebertrag:= EndUebertrag+Customer.Uebertrag;
- AnfangsUebertragnaechsteListe:=
- AnfangsUebertragnaechsteListe+Customer.Rechnung;
-
- StricheBeiBier:= StricheBeiBier+Customer.Biere;
- StricheBeiLimo:= StricheBeiLimo+Customer.Limos;
- IF AtLast(BierListe) THEN EXIT END(*IF*);
- Next(BierListe);
- END(*LOOP*);
- END(*IF*);
- END ComputeList;
-
- BEGIN
- AnfangsUebertragnaechsteListe:=0D;
- EndUebertrag:=0D;
- StricheBeiBier:=0;
- StricheBeiLimo:=0;
- ComputeList;
- WITH Kasse DO
- Einnahmen:=AnfangsUebertrag-EndUebertrag;
- (* AnfangsUebertrag-EndUebertrag = Eingänge aus Bierliste *)
-
- BierEinkaufsWert:=AusgabenFuerBierKauf;
- LimoEinkaufsWert:=AusgabenFuerLimoKauf;
-
- Ausgaben:=BierEinkaufsWert+LimoEinkaufsWert;
- (* AnfangsStand bleibt gleich *)
-
- BierFlaschenEinGang:=GekaufteBierFlaschen;(* gelieferte BierKästen * Flaschen/Kasten *)
- LimoFlaschenEinGang:=GekaufteLimoFlaschen;(* -----"---- *)
-
- BierVerkaufsWert:=VAL(LONGINT,(GekaufteBierFlaschen*VerkaufsPreis.BierPreis));
- (* gelieferte Bierkästen * Flaschen/Kasten * BierVerkaufsPreis *)
- LimoVerkaufsWert:=VAL(LONGINT,(GekaufteBierFlaschen*VerkaufsPreis.LimoPreis));
- (* -----"----- *)
-
- BierStriche:=StricheBeiBier;(* Summe der BierStriche aller Kunden *)
- LimoStriche:=StricheBeiLimo;
- END(*WITH*);
- END ComputeKassenRecord;
-
- PROCEDURE Record0Initialisieren;
- BEGIN
- WITH Kasse DO
- Einnahmen:=0D;
- SpendenEingang:=0D;
- Ausgaben:=0D;
- BierEinkaufsWert:=0D;
- LimoEinkaufsWert:=0D;
- BierVerkaufsWert:=0D;
- LimoVerkaufsWert:=0D;
- AnfangsStand:=0D;
-
- BierFlaschenEinGang:=0;
- LimoFlaschenEinGang:=0;
- BierStriche:=0;
- LimoStriche:=0;
- END(*WITH*);
-
-
- END Record0Initialisieren;
-
- PROCEDURE RecordSummen0Initialisieren;
- BEGIN
- WITH Kasse DO
- SummeDerEinnahmen:=0D;
- SummeDerSpenden:=0D;
- SummeDerAusgaben:=0D;
- SummeBierEinkaufsWert:=0D;
- SummeLimoEinkaufsWert:=0D;
- SummeBierVerkaufsWert:=0D;
- SummeLimoVerkaufsWert:=0D;
- AnfangsStand:=0D;
- SummeDerBierFlaschen:=0;
- SummeDerLimoFlaschen:=0;
- SummeDerBierStriche:=0;
- SummeDerLimoStriche:=0;
- END(*WITH*);
- END RecordSummen0Initialisieren;
-
- PROCEDURE RecordInitialisieren;
- BEGIN
- WITH Kasse DO
- SummeDerEinnahmen:=
- Einnahmen+SummeDerEinnahmen;
- SummeDerSpenden:=
- SpendenEingang+SummeDerSpenden;
- SummeDerAusgaben:=
- Ausgaben+SummeDerAusgaben;
- SummeBierEinkaufsWert:=
- BierEinkaufsWert+SummeBierEinkaufsWert;
- SummeLimoEinkaufsWert:=
- LimoEinkaufsWert+SummeLimoEinkaufsWert;
- SummeBierVerkaufsWert:=
- BierVerkaufsWert+SummeBierVerkaufsWert;
- SummeLimoVerkaufsWert:=
- LimoVerkaufsWert+SummeLimoVerkaufsWert;
- SummeDerBierFlaschen:=
- BierFlaschenEinGang+SummeDerBierFlaschen;
- SummeDerLimoFlaschen:=
- LimoFlaschenEinGang+SummeDerLimoFlaschen;
- SummeDerBierStriche:=
- BierStriche+SummeDerBierStriche;
- SummeDerLimoStriche:=
- LimoStriche+SummeDerLimoStriche;
- END(*WITH*);
- Record0Initialisieren;
- END RecordInitialisieren;
-
- PROCEDURE WriteKassenRecord;
- BEGIN
- ComputeKassenRecord;
- WITH Kasse DO
- WriteLongInt(Einnahmen,10);WriteLongInt(SummeDerEinnahmen,10);
- WriteLongInt(SpendenEingang,10);WriteLongInt(SummeDerSpenden,10);
- WriteLongInt(Ausgaben,10);WriteLongInt(SummeDerAusgaben,10);
- WriteLongInt(BierEinkaufsWert,10);WriteLongInt(SummeBierEinkaufsWert,10);
- WriteLn;
- WriteLongInt(LimoEinkaufsWert,10);WriteLongInt(SummeLimoEinkaufsWert,10);
- WriteLongInt(BierVerkaufsWert,10);WriteLongInt(SummeBierVerkaufsWert,10);
- WriteLongInt(LimoVerkaufsWert,10);WriteLongInt(SummeLimoVerkaufsWert,10);
- WriteLongInt(AnfangsStand,10);
- WriteLn;
- WriteInt(BierFlaschenEinGang,10);WriteInt(SummeDerBierFlaschen,10);
- WriteInt(LimoFlaschenEinGang,10);WriteInt(SummeDerLimoFlaschen,10);
- WriteInt(BierStriche,10);WriteInt(SummeDerBierStriche,10);
- WriteInt(LimoStriche,10);WriteInt(SummeDerLimoStriche,10);
- END(*WITH*);
- END WriteKassenRecord;
-
- PROCEDURE ReadKassenRecord;
- BEGIN
- WITH Kasse DO
- ReadLongInt(Einnahmen);ReadLongInt(SummeDerEinnahmen);
- ReadLongInt(SpendenEingang);ReadLongInt(SummeDerSpenden);
- ReadLongInt(Ausgaben);ReadLongInt(SummeDerAusgaben);
- ReadLongInt(BierEinkaufsWert);ReadLongInt(SummeBierEinkaufsWert);
- ReadLongInt(LimoEinkaufsWert);ReadLongInt(SummeLimoEinkaufsWert);
- ReadLongInt(BierVerkaufsWert);ReadLongInt(SummeBierVerkaufsWert);
- ReadLongInt(LimoVerkaufsWert);ReadLongInt(SummeLimoVerkaufsWert);
- ReadLongInt(AnfangsStand);
-
- ReadInt(BierFlaschenEinGang);ReadInt(SummeDerBierFlaschen);
- ReadInt(LimoFlaschenEinGang);ReadInt(SummeDerLimoFlaschen);
- ReadInt(BierStriche);ReadInt(SummeDerBierStriche);
- ReadInt(LimoStriche);ReadInt(SummeDerLimoStriche);
- END(*WITH*);
- END ReadKassenRecord;
-
- PROCEDURE DruckOK():BOOLEAN;
- VAR s: ARRAY [0..127] OF CHAR;
- formret : INTEGER;
- BEGIN
- s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
- formret:=FormAlert(1,s);
- RETURN formret=1
- END DruckOK;
-
- PROCEDURE InventurMachen;
- VAR InventurDiaAddr :ADDRESS;
- DiaRet :INTEGER;
- BierStr,LimoStr :ARRAY [0..2] OF CHAR;
- SollKassenStdStr,
- KassenStdStr,
- SchuldenStr,
- AussenStdStr :ARRAY [0..6] OF CHAR;
- BierFlaschenSchwund,
- LimoFlaschenSchwund,
- BierImKSchrank,
- LimoImKSchrank : INTEGER;
- WertDesKSchranks,
- AussenStaende,
- SollKassenStand,
- KassenStand : LONGINT;
- OK : BOOLEAN;
-
- PROCEDURE WriteDM(DeMark:LONGINT);
- BEGIN
- WriteLongInt((DeMark DIV 100D),5);
- WriteString('.');
- WriteLongInt((DeMark MOD 100D),2);
- WriteString(' DM ');
- END WriteDM;
- PROCEDURE WriteProzent(a,b:LONGINT);
- BEGIN
- IF (a>0D)AND (b>0D) THEN
- WriteLongInt((a*100D) DIV b,5);
- WriteString('% ');
- END(*IF*);
- END WriteProzent;
-
- PROCEDURE TexteBerechnen;
- BEGIN
- ComputeKassenRecord;
- SollKassenStand:=Kasse.SummeBierVerkaufsWert- Kasse.SummeBierEinkaufsWert
- +Kasse.AnfangsStand+Kasse.SummeLimoVerkaufsWert
- -Kasse.SummeLimoEinkaufsWert;
- KassenStand:=Kasse.SummeDerEinnahmen+Kasse.SummeDerSpenden
- +Kasse.AnfangsStand-Kasse.SummeDerAusgaben
- +Kasse.SpendenEingang+Kasse.SummeDerSpenden;
-
-
- LongIntToStr(SollKassenStand,7,SollKassenStdStr,OK);
- LongIntToStr(KassenStand,7,KassenStdStr,OK);
- LongIntToStr(SchuldenAnFax(),7,SchuldenStr,OK);
- AussenStaende:= AnfangsUebertragnaechsteListe;
- LongIntToStr(AussenStaende,7,AussenStdStr,OK);
- Delete(KassenStdStr,1,1);
- Delete(SollKassenStdStr,1,1);
- Delete(SchuldenStr,1,1);
- Delete(AussenStdStr,1,1);
- END TexteBerechnen;
- BEGIN
- TexteBerechnen;
- ResourceGetAddr(0,INVENDIA,InventurDiaAddr);
- SetText(KASSETEO,InventurDiaAddr,SollKassenStdStr);
- SetText(KASSEPRK,InventurDiaAddr,KassenStdStr);
- SetText(SBEIFAX,InventurDiaAddr,SchuldenStr);
- SetText(AUSSENST,InventurDiaAddr,AussenStdStr);
- DiaRet:=DoDialog(InventurDiaAddr,BIERE);
- IF DiaRet=OKINVNT THEN
- GetText(BIERE,InventurDiaAddr,BierStr);
- GetText(LIMOS,InventurDiaAddr,LimoStr);
- GetText(KASSEPRK,InventurDiaAddr,KassenStdStr);
- GetText(AUSSENST,InventurDiaAddr,AussenStdStr);
- StrToInt(BierStr,BierImKSchrank,OK);
- StrToInt(LimoStr,LimoImKSchrank,OK);
- StrToLongInt(AussenStdStr,AussenStaende,OK);
- StrToLongInt(KassenStdStr,KassenStand,OK);
- REPEAT
- OpenOutput('PRN:');
- WriteString('Aussenstände:');WriteDM(AussenStaende);
- WriteLn;
- WriteString('Kasseninhalt :');WriteDM(KassenStand);
- WriteLn;
- WriteString('Schulden beim Fax ');WriteDM(SchuldenAnFax());
- WriteLn;
- WriteString('Biere im KühlSchrank :');WriteInt(BierImKSchrank,5);
- WriteLn;
- WriteString('Limos im KühlSchrank :');WriteInt(LimoImKSchrank,5);
- WriteLn;
- WertDesKSchranks:=(VAL(LONGINT,(BierImKSchrank*VerkaufsPreis.BierPreis))+
- VAL(LONGINT,(LimoImKSchrank*VerkaufsPreis.LimoPreis)));
- WriteString('Wert der Getränke im Kühlschrank:');
- WriteDM(WertDesKSchranks);
- WriteLn;
- WriteString('Kassenstand aus obigen');
- WriteDM(WertDesKSchranks+KassenStand+AussenStaende-SchuldenAnFax());
- WriteLn;
- BierFlaschenSchwund:=(Kasse.BierFlaschenEinGang+Kasse.SummeDerBierFlaschen
- -(Kasse.BierStriche+Kasse.SummeDerBierStriche)
- -BierImKSchrank);
-
- WriteString('Schwund an Bieren');WriteInt(BierFlaschenSchwund,7);
- WriteString('Flaschen =');
- WriteProzent((BierFlaschenSchwund),
- (Kasse.BierFlaschenEinGang+Kasse.SummeDerBierFlaschen));
-
- WriteLn;
- LimoFlaschenSchwund:=(Kasse.LimoFlaschenEinGang+Kasse.SummeDerLimoFlaschen
- -LimoImKSchrank)
- -(Kasse.LimoStriche+Kasse.SummeDerLimoStriche);
-
- WriteString('Schwund an Limos');WriteInt(LimoFlaschenSchwund,7);
- WriteString('Flaschen =');
- WriteProzent(LimoFlaschenSchwund,
- (Kasse.LimoFlaschenEinGang+Kasse.SummeDerLimoFlaschen));
-
- WriteLn;
- WriteString('Schwund an Bargeld aus Kasse: ');
- WriteDM(KassenStand-(Kasse.SummeDerEinnahmen+Kasse.Einnahmen
- +Kasse.AnfangsStand-Kasse.SummeDerAusgaben-Kasse.Ausgaben
- +Kasse.SpendenEingang+Kasse.SummeDerSpenden));
- WriteString(' ');WriteLn;
-
- WriteString('Gesammter Schwund');
- WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
- - (Kasse.BierVerkaufsWert+Kasse.SummeBierVerkaufsWert
- +Kasse.LimoVerkaufsWert+Kasse.SummeLimoVerkaufsWert)
- -WertDesKSchranks);
-
- WriteLn;
- WriteString('Erwirtschafteter Überschuss (ohne Spenden)');
- WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
- -(Kasse.SummeDerAusgaben+Kasse.Ausgaben));
-
- WriteLn;
- WriteString('Einnahmen aus Spenden :');
- WriteDM(Kasse.SpendenEingang+Kasse.SummeDerSpenden);
- WriteLn;
- WriteString('Erwirtschafteter Überschuss (incl Spenden)');
- WriteDM((Kasse.SummeDerEinnahmen+Kasse.Einnahmen)
- -(Kasse.SummeDerAusgaben+Kasse.Ausgaben)
- +(Kasse.SpendenEingang+Kasse.SummeDerSpenden));
- WriteString(14C);
- WriteLn;
- WriteString('*****************************************************************');WriteLn;
- WriteString('Einnahmen,SummeDerEinnahmen, SpendenEingang,SummeDerSpenden,');WriteLn;
- WriteString('Ausgaben,SummeDerAusgaben, BierEinkaufsWert,SummeBierEinkaufsWert, CR');WriteLn;
- WriteString('LimoEinkaufsWert,SummeLimoEinkaufsWert, BierVerkaufsWert,SummeBierVerkaufsWert,');WriteLn;
- WriteString('LimoVerkaufsWert,SummeLimoVerkaufsWert, AnfangsStand, CR');WriteLn;
- WriteString('BierFlaschenEinGang,SummeDerBierFlaschen, LimoFlaschenEinGang,SummeDerLimoFlaschen,');WriteLn;
- WriteString('BierStriche,SummeDerBierStriche, LimoStriche,SummeDerLimoStriche');WriteLn;
- WriteString('*******************************************************************');WriteLn;
- WriteKassenRecord;
- CloseOutput;
- UNTIL DruckOK();
- Record0Initialisieren;
- RecordSummen0Initialisieren;
- Kasse.BierFlaschenEinGang:=BierImKSchrank;
- Kasse.LimoFlaschenEinGang:=LimoImKSchrank;
- Kasse.BierVerkaufsWert:= VAL(LONGINT,(BierImKSchrank*VerkaufsPreis.BierPreis));
- Kasse.LimoVerkaufsWert:= VAL(LONGINT,(LimoImKSchrank*VerkaufsPreis.LimoPreis));
- Kasse.AnfangsStand:=KassenStand;
- END(*IF*);
- END InventurMachen;
-
-
-
- PROCEDURE BierListeSpeichern(OutFileName : ARRAY OF CHAR);
- VAR OK : BOOLEAN;
- BEGIN
- OpenOutput(OutFileName);
- IF Done THEN
- WriteKassenRecord;
- SavePreise;
- SaveList;
- END(*IF*);
- CloseOutput;
- END BierListeSpeichern;
-
-
- PROCEDURE BierListeLaden(InFileName :ARRAY OF CHAR);
- BEGIN
- OpenInput(InFileName);
- IF Done THEN
- ReadKassenRecord;
- RecordInitialisieren;
- LoadPreise;
- LoadList;
- END(*IF*);
- CloseInput;
- END BierListeLaden;
- PROCEDURE AlteBierListeLaden(InFileName :ARRAY OF CHAR);
- BEGIN
- OpenInput(InFileName);
- IF Done THEN
- ReadKassenRecord;
- LoadOldPreise;
- LoadOldList;
- END(*IF*);
- CloseInput;
- END AlteBierListeLaden;
-
- BEGIN
- Record0Initialisieren;
- RecordSummen0Initialisieren
- END KassenStand.
-